import { defineStore } from 'pinia'
import { createPinia } from 'pinia'
const store = createPinia()
// 引入持久化插件
import piniaPluginpersistedstate from 'pinia-plugin-persist'
store.use(piniaPluginpersistedstate)
// useMain  可以是 useUser、useCart 之类的名字 
// defineStore('main',{..}) 在devtools 就使用 main 这个名

const useMain = defineStore('main', {
    // 相当于data
    state: () => {
        return {
            // 所有这些属性都将自动推断其类型,如果推断失败可以试下 as xxx
            authToken: '',
            authToken_hd:  "",//黑洞token
            isReadySky: false,
            routerName: sessionStorage.getItem("routerName") ? JSON.parse(sessionStorage.getItem("routerName")!) : '', // 路由name
        }
    },
    // 相当于计算属性
    getters: {
    },
    // 相当于vuex的 mutation + action，可以同时写同步和异步的代码
    actions: {
        updatedAuthToken(value: string) {
            this.authToken = value;
        },
        SET_isReadySky(payload:any) {
            this.isReadySky = payload
        },
        updateRouterName(value: string) { // 路由name
            sessionStorage.setItem("routerName", JSON.stringify(value));
            this.routerName = value;
        },
        updatedAuthTokenHd(value: string) {
            sessionStorage.setItem("authToken_hd", value);
            this.authToken_hd = value;
        },
    },
    persist: {
        enabled: true,
        strategies: [{
            key: "store",//自定义存储名称
            storage: sessionStorage,//自定义存储位置
            // storage:localStorage,//自定义存储位置
        }]
    }
})

export { store, useMain }